package TrabajoPractico;
import junit.framework.TestCase;
import org.junit.Test;

public class AterrizarTest extends TestCase{
		FormatoLatinoamericano latinoamericano;
		FormatoNorteamericano norteamericano;
		FormatoIso iso;
		FormatoFlexible formateador;
		
		
		public void setUp(){
			latinoamericano= new FormatoLatinoamericano();
			norteamericano= new FormatoNorteamericano();
			iso= new FormatoIso();
			formateador= new FormatoFlexible();
			formateador.incorporarFormato(latinoamericano);
			formateador.incorporarFormato(norteamericano);
			formateador.incorporarFormato(iso);	
		}

		
		
		//Test: Fechas validas	

		
	@Test
		public void testFormatoValidoIso() throws NoReconoceCadena{
			Fecha fecha=null;
			fecha=iso.crearFecha("2012-04-23");
			assertTrue(fecha != null);
		}

	@Test
	public void testFormatoValidoNorteamericano() throws NoReconoceCadena{
		Fecha fecha=null; 
		fecha =norteamericano.crearFecha("04-19-1995");
		assertTrue(fecha != null);
	}	

	@Test
	public void testFormatoValidoLatinoamericano() throws NoReconoceCadena{
		Fecha fecha=null; 
		fecha=latinoamericano.crearFecha("19/04/1995");
		assertTrue(fecha != null);
	}
	@Test
	public void testFormatoValidoFlexible() throws NoReconoceCadena{
		Fecha fecha=null; 
		fecha=formateador.crearFecha("19/04/1995");
		assertTrue(fecha != null);
	}

	//Test:Formatos invalidos

	@Test 
	public void testFormatoInvalidoFlexible() {
	try {
		formateador.crearFecha("invalido");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}
	@Test 
	public void testFormatoInvalidoIso() {
	try {
		iso.crearFecha("invalido");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}
	@Test 
	public void testFormatoInvalidoNorteamericano() {
	try {
		norteamericano.crearFecha("invalido");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}
	@Test 
	public void testFormatoInvalidoLatinoamericano() {
	try {
		latinoamericano.crearFecha("invalido");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}

	//Test: Fechas invalidas

	@Test 
	public void testFechaInvalidaLatinoamericano() {
	try {
		latinoamericano.crearFecha("30/02/2011");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}
	@Test 
	public void testFechaInvalidaNorteamericano() {
	try {
		norteamericano.crearFecha("30/02/2011");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}
	@Test 
	public void testFechaInvalidaIso() {
	try {
		iso.crearFecha("30/02/2011");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}

	@Test 
	public void testFechaInvalidaFlexible() {
	try {
		formateador.crearFecha("30/02/2011");
		fail("Deberia haber lanzado una excepcion");
	} 
	catch (NoReconoceCadena e) {
	}
	}

	@Test
	public void testDiferenciaDeDiasFecha1AnteriorFecha2() throws NoReconoceCadena{
		Fecha fecha1= iso.crearFecha("2011-04-15");
		Fecha fecha2= norteamericano.crearFecha("04-21-2011");
		assertSame(6,fecha1.diferenciaDeDias(fecha2));
		
	}

	@Test
	public void testDiferenciaDeDiasFecha1PosteriorFecha2() throws NoReconoceCadena{
		Fecha fecha1= iso.crearFecha("2011-04-25");
		Fecha fecha2= latinoamericano.crearFecha("11/04/2011");
		assertSame(14,fecha1.diferenciaDeDias(fecha2));
		
	}
	@Test
	public void testEsAnteriorConFecha1AnteriorAFecha2() throws NoReconoceCadena{
		Fecha fecha2= iso.crearFecha("2011-04-21");
		Fecha fecha1= formateador.crearFecha("04-15-2011");
		assertSame(true,fecha1.esAnterior(fecha2));
		
	}
	@Test
	public void testEsAnteriorConFechasIguales() throws NoReconoceCadena{
		Fecha fecha2= formateador.crearFecha("05-12-2011");
		assertSame(false,fecha2.esAnterior(fecha2));
		
	}@Test
	public void testEsAnteriorConFecha1PosteriorAFecha2() throws NoReconoceCadena{
		Fecha fecha1= iso.crearFecha("2012-06-21");
		Fecha fecha2= formateador.crearFecha("06-15-2012");
		assertSame(false,fecha1.esAnterior(fecha2));
		
	}
	}

